package com.bangf.service;


import com.bangf.domain.*;

import java.util.List;

public interface SelectService {

    /**
     * @deprecation 查询所有的乡镇
     * @return List
     * @author 雷楚桥
     * @date 2018-09-07 14:14
     */
    List<FpTown> findAllTown();

    /**
     * @deprecation 根据乡镇id，查询该乡镇的所有村庄
     * @param townId Integer 乡镇id
     * @return List
     * @author 雷楚桥
     * @date 2018-09-07 14:37
     */
    List<FpVillage> findAllVillageByTownId(Integer townId);

    /**
     * @deprecation 根据乡镇id,检测乡镇是否存在
     * @param townId Integer
     * @return boolean
     * @author 雷楚桥
     * @date 2018-09-07 14:40
     */
    boolean checkHasTown(Integer townId);

    /**
     * @deprecation 根据乡镇id,检测乡镇是否存在
     * @param villageId Integer
     * @return boolean
     * @author 雷楚桥
     * @date 2018-09-07 15:08
     */
    boolean checkHasVillage(Integer villageId);

    /**
     * @deprecation 根据村庄id，获取村庄的人口统计
     * @param villageId Integer
     * @return List
     * @author 雷楚桥
     * @date 2018-09-07 15:09
     */
    FpVillageSum findVillageSumByVillageId(Integer villageId);

    /**
     * @deprecation 根据乡镇id，获取乡镇的人口统计
     * @param townId Integer 乡镇id
     * @return FpTownSum
     * @author 雷楚桥
     * @date 2018-09-07 15:39
     */
    FpTownSum findTownSumByTownId(Integer townId);

    /**
     * @deprecation 获取一个乡镇下的所有家庭
     * @param townId Integer 乡镇id
     * @return List
     * @author 雷楚桥
     * @date 2018-09-07 17:21
     */
    List<FpHousehold> findHouseholdByTownId(Integer townId);

    /**
     * @deprecation 统计家庭数量
     * @return Long
     * @author 雷楚桥
     * @date 2018-09-07 18:35
     */
    Long countAllHouseHold();

    /**
     * @deprecation 获取指定页数的家庭
     * @param index Integer 索引位置
     * @param limit Integer 长度
     * @return List
     * @author 雷楚桥
     * @date 2018-09-07 18:45
     */
    List<FpHousehold> findHouseHoldLimit(Integer index, Integer limit);

    /**
     * @deprecation 获取一个家庭的人员数量
     * @param householdId Integer 家庭id
     * @return Integer
     * @author 雷楚桥
     * @date 2018-09-07 19:04
     */
    Integer countResidentByHouseholdId(Integer householdId);

    /**
     * @deprecation 获取一个乡镇的所有家庭的收入总和
     * @param townId Integer 乡镇id
     * @return Long
     * @author 雷楚桥
     * @date 2018-09-07 23:09
     */
    Integer sumHouseholdAllIncomeByTownId(Integer townId);

    /**
     * @deprecation 获取一个乡镇的所有家庭的数量
     * @param townId Integer 乡镇id
     * @return Long
     * @author 雷楚桥
     * @date 2018-09-07 23:17
     */
    Integer countHouseholdByTownId(Integer townId);

    /**
     * @deprecation 统计一个乡镇的人口数量
     * @param townId Integer 乡镇id
     * @return Long
     * @author 雷楚桥
     * @date 2018-09-07 23:21
     */
    Integer countResidentByTownId(Integer townId);

    /**
     * @deprecation 获取所有的乡镇统计
     * @return List
     * @author 雷楚桥
     * @date 2018-09-07 23:37
     */
    List<FpTownSum> findAllTownSum();

    /**
     * @deprecation 检测乡镇排名长度是否超出
     * @param rank Integer
     * @return boolean
     * @author 雷楚桥
     * @date 2018-09-08 9:07
     */
    boolean checkHasTownRank(Integer rank);

    /**
     * @deprecation 根据年总经济查询指定长度的乡镇排名
     * @param rank Integer 总经济
     * @return List
     * @author 雷楚桥
     * @date 2018-09-08 9:11
     */
    List<FpTownSum> findTownSumOrderByAllIncome(Integer rank);


    /**
     * @deprecation 根据年总经济查询指定长度的村庄排名
     * @param rank Integer 总经济
     * @return List
     * @author 雷楚桥
     * @date 2018-09-08 9:11
     */
    List<FpVillageSum> findVillageSumOrderByAllIncome(Integer rank);

    /**
     * @deprecation 统计家庭是否有五保人员
     * @param householdId Integer 家庭id
     * @return boolean
     * @author 雷楚桥
     * @date 2018-09-10 16:12
     */
    boolean checkResidentWbByHouseholdId(Integer householdId);

    /**
     * @deprecation 获取一个乡镇的居民满意度
     * @param townId Integer 乡镇id
     * @return FpSatisfy
     * @author 雷楚桥
     * @date 2018-09-09 10:43
     */
    FpSatisfy findSatisfyByTownId(Integer townId);

    /**
     * @deprecation 获取一个乡镇的居民评价表
     * @param townId Integer 乡镇id
     * @return FpEvaluation
     * @author 雷楚桥
     * @date 2018-09-09 10:44
     */
    FpEvaluation findEvaluationByTownId(Integer townId);

    /**
     * @deprecation 获取乡镇的帮扶家庭数量
     * @param townId Integer 乡镇id
     * @return Integer
     * @author 雷楚桥
     * @date 2018-09-09 11:34
     */
    Integer countHelperByTownId(Integer townId);

    /**
     * @deprecation 获取一条总统计表
     * @return FpSum
     * @author 雷楚桥
     * @date 2018-09-09 15:12
     */
    FpSum findSumLimitOne();

    /**
     * @deprecation 获取这个乡镇后的贫困村的数量
     * @param townId Integer 乡镇id
     * @return Integer
     * @author 雷楚桥
     * @date 2018-09-09 16:44
     */
    Integer countPoorVillageByTownId(Integer townId);

    /**
     * @deprecation 获取一个乡镇的详细信息
     * @param townId Integer 乡镇id
     * @return FpTown
     * @author 雷楚桥
     * @date 2018-09-10 11:07
     */
    FpTown findOneTown(Integer townId);

    /**
     * @deprecation 获取一个乡镇的建档立卡户的数量
     * @param townId Integer 乡镇id
     * @return Integer
     * @author 雷楚桥
     * @date 2018-09-10 14:32
     */
    Integer countCardHouseholdByTownId(Integer townId);


    /**
     * @deprecation 获取一个乡镇的一般户年均收入
     * @param nhType Integer 农户类型
     * @param townId Integer 乡镇id
     * @return Integer
     * @author 雷楚桥
     * @date 2018-09-10 14:40
     */
    Integer countHouseholdAvgIncomeByTownId(Integer nhType,Integer townId);

    /**
     * @deprecation 统计人员的总数
     * @return Long
     * @author 雷楚桥
     * @date 2018-09-10 16:43
     */
    Long countResident();

    /**
     * @deprecation 获取分页人员表
     * @param index Integer 索引位置
     * @param limit Integer 长度
     * @return List
     * @author 雷楚桥
     * @date 2018-09-10 17:10
     */
    List<FpResident> findResidentLimit(Integer index, Integer limit);

    /**
     * @deprecation 查询一条统计记录
     * @return FpSum
     * @author 雷楚桥
     * @date 2018-09-11 9:36
     */
    FpSum findOneSum();


    /**
     * @deprecation 查询所有的村庄统计
     * @return List
     * @author 雷楚桥
     * @date 2018-09-11 11:13
     */
    List<FpVillageSum> findAllVillageSum();

    /**
     * @deprecation 获取一个村庄的所有家庭的收入总和
     * @param villageId Integer 村庄id
     * @return Integer
     * @author 雷楚桥
     * @date 2018-09-11 11:16
     */
    Integer sumHouseholdAllIncomeByVillageId(Integer villageId);

    /**
     * @deprecation 查询一个村庄的详细信息
     * @param villageId Integer 村庄id
     * @return FpVillage
     * @author 雷楚桥
     * @date 2018-09-11 11:38
     */
    FpVillage findOneVillage(Integer villageId);

    /**
     * @deprecation 根据姓名查询一个家庭
     * @param name String 姓名
     * @return List
     * @author 雷楚桥
     * @date 2018/9/16 11:27
     */
    List<FpHousehold> findHouseholdByName(String name);

    /**
     * @deprecation 根据身份证号查询家庭
     * @param idCard String 身份证号
     * @return List
     * @author 雷楚桥
     * @date 2018/9/16 11:27
     */
    List<FpHousehold> findHouseholdByIdCard(String idCard);


    /**
     * @deprecation 根据家庭id查询家庭的所有成员
     * @param householdId Integer 家庭id
     * @return List
     * @author 雷楚桥
     * @date 2018/9/16 11:30
     */
    List<FpResident> findResidentByHouseholdId(Integer householdId);
}
